package com.sxit.ecwx.core.utils;

import java.util.Hashtable;
import java.util.Map;

/**
 * 
 * 功能说明:  
 * 用ThreadLocal提供�?个存储线程内变量的地�?.
 * <p/>
 * 客户端代码可以用静�?�方法存储和获取线程内变�?,不需要依赖于HttpSession.
 * web层的Controller可�?�过此处向business层传入user_id之类的变�?

 * 创建时间: 2011 12 2814:40:22
 * @author admin
 */
@SuppressWarnings("unchecked")
public class UserSession {
	//线程变量
	private static final ThreadLocal<Map> sessionMap = new ThreadLocal<Map>(){
        protected Map initialValue() {return new Hashtable();}
    };

    /**
     * 取得属�??
     * @param attribute
     * @return
     */
    public static Object get(String attribute) {
     Map map =  sessionMap.get();
     return map.get(attribute);
    }

    /**
     * 取得属�??
     * @param <T>
     * @param attribute
     * @param clazz
     * @return
     */
    public static <T> T get(String attribute, Class<T> clazz) {
     return (T) get(attribute);
    }

    /**
     * 设置属�??
     * @param attribute
     * @param value
     */
    public static void set(String attribute, Object value) {
     Map map = sessionMap.get();
     map.put(attribute, value);
    }
}
